﻿using System;

namespace Runtime.ADAggregator
{
    public abstract class ADPlayer
    {
        /// <summary>
        /// 0 未加载 、 1 加载中、 2 加载完成
        /// </summary>
        protected int curState;

        public    string     Key;
        protected ADListener adListener;
        public    Action     OnErrorAction;

        public AD_Type ADType { get; internal set; }

        public int State => curState;

        public ADPlayer Init(string key)
        {
            this.Key      = key;
            this.curState = 0;
            adListener    = new ADListener();
            this.OnInit();
            return this;
        }

        public bool IsLoading()
        {
            return curState == 1;
        }

        public abstract void ShowAD(Action onClose, Action<bool> onVideoComplete);

        public virtual bool IsReadly()
        {
            return this.curState == 2;
        }

        public abstract void LoadAD();

        public virtual void OnInit()
        {
        }

        /// <summary>
        /// 主动关闭广告
        /// </summary>
        public virtual void CloseAD()
        {
        }
        
        public void OnError(object code, string message)
        {
            this.OnErrorAction?.Invoke();
            this.OnErrorAction = null;
            curState = 0;
        }
    }
}